package com.liyy.platform.other.reflect;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

public class Test {

	public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, InstantiationException {
		//通过完整的类名（包名.类名）获得ZhangSan对应的的Class对象
		Class<?> c =Class.forName("com.liyy.platform.other.reflect.ZhangSan");
		//通过zhangsan的class对象初始化zhangsan的一个实例（其实是调用无参构造方法进行初始化）
		ZhangSan zs=(ZhangSan) c.newInstance();
		//通过zhangsan的class对象获得zhangsan对应的eat方法对应的Method方法对象
		Method m=c.getMethod("eat");
		//执行时取消java安全检查，可以提高执行效率（与默认检查的效率相比，执行效率大约提升4倍！！！）
		//m.setAccessible(true);
		//调用zhangsan的eat方法
		m.invoke(zs, args);
	}

}
